In the recent history of computers, advances in the performance and speed of central processing units (CPU's) have far outraced the advances in the performance of hard disk drives, although hard disk drives have also made great advances in the recent past. However, the far greater increases in the performance of CPU's has begun to cause input/output (I/O) bottlenecks when the CPU accesses a disk drive because the increases in disk drive performance have not caught up to the improved performance of CPU's.
Another problem is that although top quality disk drives offer a mean time between failure of about 150,000 hours, in systems using multiple disk drives failures will occur. One approach to addressing the failure problem is called mirroring. In the mirroring technique, the host computer writes data to two disk drives simultaneously. If one disk drive fails, a copy of all the data is immediately available on the other drive. Mirroring protects against a failure in one drive but it requires a user to purchase twice as much storage to hold the data and programs. Mirroring also does not address the I/O bottle-neck problem.
Another approach which addresses the problem of a failure in a multiple disk drive system is disclosed in U.S. Pat. No. 4,870,643 to Bultman, et al., which issued on Sept. 26, 1989. The Bultman patent discloses a system with five standard 51/4" Winchester disk drives with successive bytes of digital information routed to four of the drives. The fifth drive contains parity information. Control circuitry is provided so that any one of the five standard drives may be unplugged and replaced without interruption of the operation of the storage system. The Bultman computer configuration uses less drives for storing the same amount of information as the mirroring technique discussed above but does not address the I/O bottleneck problem.
A recently proposed computer configuration for partially alleviating these problems was set forth in an article titled "Strength (and Safety) in Numbers" in the December 1990 issue of Byte Magazine written by Michael H. Anderson. That computer configuration is called Redundant Arrays of Inexpensive Disks, and is referenced by its acronym "RAID".
A RAID system is a group of intelligent disk drives under the control of a single device driver or host computer. The proposed RAID system offers significantly higher performance than a single disk drive. Data can be striped or dispensed among several drives so that several of the drives are accessed in parallel to read one block of data which was striped across the several drives. This provides for quicker access than retrieving the block from a single drive.
In a RAID system, check bytes are stored, also preferably in an interleaved pattern across all of the drives. The check (or parity) byte is the sum of the data stored on the other drives in the same position. Therefore, if one drive fails the data which was stored on that drive can be quickly recreated by a calculation involving a check byte and data on the other non-failed drives for the same position. All of the above calculations are performed by the host computer.
When the host is instructed to write a block of new data which may be designated "NA" to a disk drive, the host computer first reads the old data "A" from the position to which the new data "NA" will be stored and the corresponding check bytes or parity bytes "PA" as shown in FIG. 2. Incidentally, the old parity designated "PA" is the parity involving not only the data "A", but also data from other disk drives. The host then calculates the new check bytes NPA by subtracting out the old data "A" and summing in the new data "PA". The check bytes are then rewritten over the old check bytes and the new data "NA" is written to the position where the old data "A" previously resided.
Unfortunately, though the above described RAID technique offers some improvement in performance, the host processor is forced to do a large number of calculations and multiple transfers of data over the bus which connects the host and the disk drives each time a block of data is to be written to a disk drive. The large number of calculations and the bus transfers reduces the performance of the host computer and the overall system.
As compared with the foregoing prior art arrangements, the principal objects of the present invention are to reduce the involvement of the host computer in the data storage process and to minimize the number of data transfers along the bus which interconnects the disk drives and the host computer.